package uni.edu.pe.analisisSentimental.dao;

import java.util.List;

import uni.edu.pe.analisisSentimental.domain.TweetProcesado;
import uni.edu.pe.analisisSentimental.domain.Url;
import uni.edu.pe.analisisSentimental.dto.OpinionMensajeDto;
import uni.edu.pe.analisisSentimental.dto.TweetProcesadoDto;

public interface TweetProcesadoDAO {

	/**
	 * 
	 * @param tp
	 */
	void save(TweetProcesado tp);
	
	/**
	 * 
	 * @param ltp
	 */
	void saveAll(List<TweetProcesado> ltp);
	
	/**
	 * 
	 * @param ltp
	 * @return
	 */
	int[] saveAllBatch(List<TweetProcesado> ltp);
	
	/**
	 * 
	 * @param codFinData 
	 * @return
	 */
	List<TweetProcesadoDto> obtenerTweetsParaTratamientoLenguaje(String codFinData);

	/**
	 * 
	 * @param ltpdto
	 */
	void guardarTextoProcesadoTratamientoTwitter(List<TweetProcesadoDto> ltpdto);
	
	
	/**
	 * 
	 * @param ltpdto
	 * @return
	 */
	int[] guardarTextoProcesadoTratamientoTwitterBatch(List<TweetProcesadoDto> ltpdto);
	
	/**
	 * 
	 * @param tpdto
	 */
	void guardarTextoProcesadoTratamientoTwitter(TweetProcesadoDto tpdto);

	/**
	 * 
	 * @param lstNs
	 */
	void descartarTweetsNS(List<Long> lstNs);
	
	/**
	 * 
	 * @param idTns
	 */
	void descartarTweetsNS(Long idTns);
	
	/**
	 * 
	 * @param lstNs
	 */
	int[] descartarTweetsNSBatch(List<Long> lstNs);

	/**
	 * 
	 */
	void actualizarTweetsProcesadosRM();
	
    /**
     * 
     */
	void limpiarDataTratamientoLenguajeRM();

	/**
	 * 
	 * @param codFinData 
	 * @return
	 */
	List<TweetProcesado> obtenerTweetsParaTratamientoLenguajePostRM(String codFinData);

	/**
	 * 
	 * @param ltp
	 */
	void guardarTweetsTratadosPorFaseTwitter(List<TweetProcesado> ltp);
	
	/**
	 * 
	 * @param ltp
	 * @return
	 */
	int[] guardarTweetsTratadosPorFaseTwitterBatch(List<TweetProcesado> ltp);
	
	/**
	 * 
	 * @param tp
	 */
	void guardarTweetsTratadosPorFaseTwitter(TweetProcesado tp);
	
	/**
	 * 
	 * @param codFinData 
	 * @return
	 */
	List<TweetProcesado> obtenerTweetsParaAnalisisSubjetividadCo(String codFinData);

	/**
	 * 
	 */
	void actualizarTweetsProcesadosC1();
	
	/**
	 * 
	 */
	void actualizarTweetsProcesadosC2();
	
	/**
	 * 
	 * @param lstUrl
	 */
	int[] actualizarFaseTweetsProcesadosWebBatch(List<Url> lstUrl);

	/**
	 * 
	 * @param lstOm
	 */
	int[] sintetizarOpinionMensajeBatch(List<OpinionMensajeDto> lstOm);
	
	/**
	 * 
	 * @param codFinalidadData
	 * @return
	 */
	List<TweetProcesado> obtenerTweetsEvaluacionPerformance(String codFinalidadData);

	/**
	 * 
	 */
	void actualizarUrlsProcesadasC1();

	/**
	 * 
	 */
	void actualizarUrlsProcesadasC2();
}
